diff --git a/device-common.mk b/device-common.mk
index b5507da..ed41b69 100644
--- a/device-common.mk
+++ b/device-common.mk
@@ -17,6 +17,9 @@
 # Adjust the dalvik heap to be appropriate for a tablet.
 $(call inherit-product-if-exists, frameworks/native/build/tablet-10in-xhdpi-2048-dalvik-heap.mk)
 
+# Set vendor kernel path
+PRODUCT_VENDOR_KERNEL_HEADERS := device/linaro/hikey/kernel-headers
+
 # Set custom settings
 DEVICE_PACKAGE_OVERLAYS := device/linaro/hikey/overlay
 
diff --git a/hifi/Android.mk b/hifi/Android.mk
new file mode 100644
index 0000000..f3377fe
--- /dev/null
+++ b/hifi/Android.mk
@@ -0,0 +1,17 @@
+#
+# Copyright 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+include $(all-subdir-makefiles)
diff --git a/hifi/debug-hifi/Android.mk b/hifi/debug-hifi/Android.mk
new file mode 100644
index 0000000..8e55d9a
--- /dev/null
+++ b/hifi/debug-hifi/Android.mk
@@ -0,0 +1,21 @@
+# Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := debug-hifi
+LOCAL_SHARED_LIBRARIES := liblog libcutils
+LOCAL_SRC_FILES := debug-hifi.c
+include $(BUILD_EXECUTABLE)
diff --git a/hifi/debug-hifi/debug-hifi.c b/hifi/debug-hifi/debug-hifi.c
new file mode 100644
index 0000000..5e1fcd8
--- /dev/null
+++ b/hifi/debug-hifi/debug-hifi.c
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "debug-hifi"
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <poll.h>
+#include <pthread.h>
+#include <sys/ioctl.h>
+#include <sys/prctl.h>
+#include <stdio.h>
+#include <cutils/log.h>
+#include <cutils/uevent.h>
+#include <stdlib.h>
+#include <linux/audio_hifi.h>
+
+int main(int argc, char *argv[])
+{
+    char *buffer;
+    int hifi_dsp_fd;
+    int ret = -1;
+    int i = 0;
+    unsigned int memsize = DRV_DSP_UART_TO_MEM_SIZE;
+    unsigned int clear = 0;
+    struct misc_io_dump_buf_param dump_buf;
+
+    ALOGI("Enter hifi-dsp Audio Framework - sample application\n");
+    if (argc > 1)
+        memsize = strtoul(argv[1], NULL, 0);
+    if (argc > 2)
+        clear = 1;
+    hifi_dsp_fd = open(HIFI_DSP_MISC_DRIVER, O_RDWR, 0);
+    if (hifi_dsp_fd < 0) {
+        ALOGE("Error %d opening hifi dsp device", errno);
+        return ret;
+    }
+    buffer = malloc(memsize);
+    if (!buffer) {
+        ALOGE("Error allocating buffer");
+        goto out0;
+    }
+    dump_buf.user_buf = (uint64_t)buffer;
+    dump_buf.buf_size = memsize;
+    dump_buf.clear = clear;
+    ret = ioctl(hifi_dsp_fd, HIFI_MISC_IOCTL_DISPLAY_MSG, &dump_buf);
+    if (ret) {
+        ALOGE("Error %d accessing message buffer", errno);
+    } else {
+        printf("%s\n", buffer);
+    }
+    free(buffer);
+out0:
+    close(hifi_dsp_fd);
+    ALOGI("Exit hifi-dsp Audio Framework - sample application\n");
+    return ret;
+}
diff --git a/kernel-headers/linux/audio_hifi.h b/kernel-headers/linux/audio_hifi.h
new file mode 100644
index 0000000..2fff5d9
--- /dev/null
+++ b/kernel-headers/linux/audio_hifi.h
@@ -0,0 +1,42 @@
+#ifndef _AUDIO_HIFI_H
+#define _AUDIO_HIFI_H
+
+#include <linux/types.h>
+
+struct misc_io_dump_buf_param {
+	uint64_t user_buf;
+	unsigned int clear;	/*clear current log buf */
+	unsigned int buf_size;
+};
+
+struct misc_io_pcm_buf_param {
+	uint64_t buf;
+	uint32_t buf_size;
+};
+
+#define HIFI_DSP_MISC_DRIVER	"/dev/hifi_misc"
+
+#define HIFI_MISC_IOCTL_ASYNCMSG		_IOWR('A', 0x70, struct misc_io_async_param)
+#define HIFI_MISC_IOCTL_SYNCMSG			_IOW('A', 0x71, struct misc_io_sync_param)
+#define HIFI_MISC_IOCTL_SENDDATA_SYNC		_IOW('A', 0x72, struct misc_io_senddata_sync_param)
+#define HIFI_MISC_IOCTL_GET_PHYS		_IOWR('A', 0x73, struct misc_io_get_phys_param)
+#define HIFI_MISC_IOCTL_TEST			_IOWR('A', 0x74, struct misc_io_senddata_sync_param)
+#define HIFI_MISC_IOCTL_WRITE_PARAMS		_IOWR('A', 0x75, struct misc_io_sync_param)
+#define HIFI_MISC_IOCTL_DUMP_HIFI		_IOWR('A', 0x76, struct misc_io_dump_buf_param)
+#define HIFI_MISC_IOCTL_DUMP_CODEC		_IOWR('A', 0x77, struct misc_io_dump_buf_param)
+#define HIFI_MISC_IOCTL_WAKEUP_THREAD		_IOW('A',  0x78, unsigned int)
+#define HIFI_MISC_IOCTL_DISPLAY_MSG		_IOWR('A', 0x79, struct misc_io_dump_buf_param)
+#define HIFI_MISC_IOCTL_WAKEUP_PCM_READ_THREAD	_IOW('A',  0x7a, unsigned int)
+#define HIFI_MISC_IOCTL_PCM_GAIN		_IOW('A',  0x7b, struct misc_io_pcm_buf_param)
+#define HIFI_MISC_IOCTL_XAF_IPC_MSG_SEND	_IOW('A',  0x7c, xf_proxy_msg_t)
+#define HIFI_MISC_IOCTL_XAF_IPC_MSG_RECV	_IOR('A', 0x7d, xf_proxy_msg_t)
+
+#ifdef CLT_VOICE
+#define CLT_HIFI_MISC_IOCTL_SEND_VOICE		_IOWR('A', 0x90, struct misc_io_async_param)
+#endif
+
+#define HIFI_MISC_IOCTL_GET_VOICE_BSD_PARAM	_IOWR('A',  0x7c, unsigned int)
+
+#define DRV_DSP_UART_TO_MEM_SIZE	0x7f000
+
+#endif /* _AUDIO_HIFI_H */
